<html>
	<head>
		<title>Java Reflection In Action ReadMe</title>
	</head>
	<body>
		<h1><it>Java Reflection In Action</it> ReadMe</h1>

<p>
This directory contains the source code for the listings
in "Java Reflection in Action."  Below is a mapping of the
listing numbers to the Java files in this directory.
In addition, we need to apprise you of several points.
</p>

<ol>
<li>
Almost all of the listings may need to be compiled with
<br><pre><code>        javac -classpath "../..;..;." *.java</code></pre><br>
using a Java 1.4 compiler.  Some listings require a different
command, which is specified in a local file named "compile-with.txt".
</li>

<li>
You will see comments of the form <code>//#<number></code> at the end of a line.
These are the instructions to the typesetter to insert the numbered 
billiard balls that you see in the listing in the book. (Note: The source
code here is what we sent to typesetting -- there may be minor formatting
differences with the listings in the book.)
</li>

<li>
You will see comments of the forms <code>//start extract ...</code> and
<code>//stop extract ...</code>  These are instructions for a small program
we wrote that extracts code segments for inclusion into the book.
</li>

</ol>



<ul>
<li>Listing 1.1  ---> <a href="snippets/GetColor.java">snippets/GetColor.java</a></li>
<li>Listing 1.2  ---> </li>
<li>Listing 1.3  ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></a></li>
<li>Listing 1.4  ---> <a href="snippets/UpdatedSetColor.java">snippets/UpdatedSetColor.java</a></li>

<li>Listing 2.1  ---> <a href="snippets/AllFieldsSnippet.java">snippets/AllFieldsSnippet.java</a></li>
<li>Listing 2.2  ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 2.3  ---> <a href="serialization/Driver.java">serialization/Driver.java</a></li>
<li>Listing 2.4  ---> <a href="serialization/Driver.java">serialization/Driver.java</a></li>
<li>Listing 2.5  ---> <a href="serialization/ZooTest.java">serialization/ZooTest.java</a></li>
<li>Listing 2.6  ---> <a href="serialization/ZooOutput.extract">serialization/ZooOutput.extract</a> (XML fragment: "view source" after link fails)</li>

<li>Listing 3.1  ---> <a href="noah-facade/MainApplication.java">noah-facade/MainApplication.java</a></li>
<li>Listing 3.2  ---> <a href="parrot/constructorWithParams/ParrotUser.java">parrot/constructorWithParams/ParrotUser.java</a></li>
<li>Listing 3.3  ---> <a href="parrot/defaultConstructor/ParrotUser.java">parrot/defaultConstructor/ParrotUser.java</a></li>
<li>Listing 3.4  ---> <a href="serialization/Driver.java">serialization/Driver.java</a></li>
<li>Listing 3.5  ---> <a href="serialization/Driver.java">serialization/Driver.java</a></li>
<li>Listing 3.6  ---> <a href="serialization/Driver.java">serialization/Driver.java</a></li>
<li>Listing 3.7  ---> <a href="serialization/Driver.java">serialization/Driver.java</a></li>

<li>Listing 4.1  ---> </li>
<li>Listing 4.2  ---> </li>
<li>Listing 4.3  ---> <a href="proxy-tracing/TracingIH.java">proxy-tracing/TracingIH.java</a></li>
<li>Listing 4.4  ---> <a href="proxy-tracing/DogFactory.java">proxy-tracing/DogFactory.java</a></li>
<li>Listing 4.5  ---> <a href="proxy-tracing/InvocationHandlerBase.java">proxy-tracing/InvocationHandlerBase.java</a></li>
<li>Listing 4.6  ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 4.7  ---> <a href="proxy-tracing/SynchronizedIH.java">proxy-tracing/SynchronizedIH.java</a></li>
<li>Listing 4.8  ---> <a href="stubGenerator/Stub.java">stubGenerator/Stub.java</a></li>
<li>Listing 4.9  ---> <a href="stubGenerator/History.java">stubGenerator/History.java</a></li>
<li>Listing 4.10 ---> <a href="stubGenerator/DefaultHistory.java">stubGenerator/DefaultHistory.java</a></li>
<li>Listing 4.11 ---> <a href="stubGenerator/ReturnValueStrategy.java">stubGenerator/ReturnValueStrategy.java</a></li>
<li>Listing 4.12 ---> <a href="stubGenerator/DefaultReturnValueStrategy.java">stubGenerator/DefaultReturnValueStrategy.java</a></li>
<li>Listing 4.13 ---> <a href="stubGenerator/WrappedException.java">stubGenerator/WrappedException.java</a></li>
<li>Listing 4.14 ---> <a href="stubGenerator/StubIH.java">stubGenerator/StubIH.java</a></li>
<li>Listing 4.15 ---> <a href="soapClientDemo/SoapInvocationHandler.java">soapClientDemo/SoapInvocationHandler.java</a></li>
<li>Listing 4.16 ---> <a href="soapClientDemo/BNQuoteService.java">soapClientDemo/BNQuoteService.java</a></li>
<li>Listing 4.17 ---> <a href="soapClientDemo/SoapClientTest.java">soapClientDemo/SoapClientTest.java</a></li>
<li>Listing 4.18 ---> <a href="pointImpl/Point.java">pointImpl/Point.java</a>,
              <a href="pointImpl/PointImpl1.java">pointImpl/PointImpl1.java</a></li>
<li>Listing 4.19 ---> <a href="pointImpl/PointImpl1.java">pointImpl/PointImpl1.java</a></li>

<li>Listing 5.1  ---> <a href="call-stack-introspection/Logger.java">call-stack-introspection/Logger.java</a></li>
<li>Listing 5.2  ---> <a href="call-stack-introspection2/Logger.java">call-stack-introspection2/Logger.java</a></li>
<li>Listing 5.3  ---> <a href="call-stack-introspection2/LoggerImpl.java">call-stack-introspection2/LoggerImpl.java</a></li>
<li>Listing 5.4  ---> <a href="proxy-tracing/TimeInterval.java">proxy-tracing/TimeInterval.java</a>,
              <a href="proxy-tracing/TimeIntervalImpl1.java">proxy-tracing/TimeIntervalImpl1.java</a></li>
<li>Listing 5.5  ---> <a href="proxy-tracing/TimeIntervalImpl2.java">proxy-tracing/TimeIntervalImpl2.java</a></li>
<li>Listing 5.6  ---> <a href="invariantChecking/InvariantSupporter.java">invariantChecking/InvariantSupporter.java</a></li>
<li>Listing 5.7  ---> <a href="invariantChecking/Monkey.java">invariantChecking/Monkey.java</a></li>
<li>Listing 5.8  ---> <a href="invariantChecking/InvariantChecker.java">invariantChecking/InvariantChecker.java</a></li>
<li>Listing 5.9  ---> <a href="invariantChecking/SynchronizedInvariantChecker.java">invariantChecking/SynchronizedInvariantChecker.java</a></li>

<li>Listing 6.1  ---> <a href="simpleClassLoader/SimpleClassLoader.java">simpleClassLoader/SimpleClassLoader.java</a></li>
<li>Listing 6.2  ---> <a href="suiteTest/SimpleSuiteTestProgram.java">suiteTest/SimpleSuiteTestProgram.java</a></li>
<li>Listing 6.3  ---> <a href="simpleClassLoader/classLoaderTest/SimpleClassLoaderTest.java">simpleClassLoader/classLoaderTest/SimpleClassLoaderTest.java</a></li>
<li>Listing 6.4  ---> <a href="simpleClassLoader/classLoaderTest/testclasses/ConstructOnce.java">simpleClassLoader/classLoaderTest/testclasses/ConstructOnce.java</a></li>
<li>Listing 6.6  ---> <a href="dynamicClassLoading/AbstractProduct.java">dynamicClassLoading/AbstractProduct.java</a></li>
<li>Listing 6.7  ---> <a href="dynamicClassLoading/ProductIH.java">dynamicClassLoading/ProductIH.java</a></li>

<li>Listing 7.1  ---> <a href="helloWorld/HelloWorld.java">helloWorld/HelloWorld.java</a></li>
<li>Listing 7.2  ---> <a href="c2c/C2C.java">c2c/C2C.java</a></li>
<li>Listing 7.3  ---> <a href="c2c/Args.java">c2c/Args.java</a></li>
<li>Listing 7.4  ---> <a href="c2c/C2CConstructor.java">c2c/C2CConstructor.java</a></li>
<li>Listing 7.5  ---> <a href="c2c/tests/HelloWorldConstructor.java">c2c/tests/HelloWorldConstructor.java</a></li>
<li>Listing 7.6  ---> <a href="c2c/C2CTransformation.java">c2c/C2CTransformation.java</a></li>
<li>Listing 7.7  ---> <a href="c2c/C2ExtentManagedC.java">c2c/C2ExtentManagedC.java</a></li>
<li>Listing 7.8  ---> <a href="c2c/tests/ExtentManagedSquirrel.java">c2c/tests/ExtentManagedSquirrel.java</a></li>
<li>Listing 7.9  ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 7.10 ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 7.11 ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 7.12 ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 7.13 ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 7.14 ---> <a href="c2c/C2IdentitySubclassOfC.java">c2c/C2IdentitySubclassOfC.java</a></li>
<li>Listing 7.15 ---> <a href="c2c/C2CException.java">c2c/C2CException.java</a></li>
<li>Listing 7.16 ---> <a href="mopex/UQueue.java">mopex/UQueue.java</a></li>

<li>Listing 8.1  ---> <a href="c2c/C2SingletonC.java">c2c/C2SingletonC.java</a></li>
<li>Listing 8.2  ---> <a href="c2c/dogExample/SingletonDog.java">c2c/dogExample/SingletonDog.java</a></li>
<li>Listing 8.3  ---> <a href="c2c/C2InvariantCheckingC.java">c2c/C2InvariantCheckingC.java</a></li>
<li>Listing 8.4  ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 8.5  ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 8.6  ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 8.7  ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 8.8  ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 8.9  ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 8.10 ---> <a href="mopex/Mopex.java">mopex/Mopex.java</a></li>
<li>Listing 8.11 ---> <a href="c2c/C2ProxyForC.java">c2c/C2ProxyForC.java</a></li>

<li>Listing 9.1  ---> <a href="performance/HelloWorldBenchMark.java">performance/HelloWorldBenchMark.java </a></li>
<li>Listing 9.2  ---> <a href="performance/DoNothingInterface.java">performance/DoNothingInterface.java </a></li>
<li>Listing 9.3  ---> <a href="performance/DoNothing.java">performance/DoNothing.java </a></li>
<li>Listing 9.4  ---> <a href="performance/CallBenchMark.java">performance/CallBenchMark.java </a></li>
<li>Listing 9.5  ---> <a href="performance/InvokeBenchMark.java">performance/InvokeBenchMark.java </a></li>
<li>Listing 9.6  ---> <a href="performance/DoNothingCaller.java">performance/DoNothingCaller.java</a>,
              <a href="performance/DoNothingInvoker.java">performance/DoNothingInvoker.java</a></li>

<li>Listing B.1  ---> <a href="helloWorld4appendix/HelloWorldGenerator2.java">helloWorld4appendix/HelloWorldGenerator2.java</a></li>
</ul>
</body>
</html>



